home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / gkismet / Preferences.pm < prev    next >
Text File  |  2005-10-20  |  10KB  |  395 lines

  1. #!/usr/bin/perl -w
  2. #
  3. # $Id: Preferences.pm,v 1.29 2005/04/11 21:58:16 solovam Exp $
  4. #
  5. # This file is a part of gkismet
  6. #
  7. # This program is free software; you can redistribute it and/or
  8. # modify it under the terms of the GNU General Public License
  9. # as published by the Free Software Foundation; either version 2
  10. # of the License, or (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program; if not, write to the Free Software
  19. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20. #
  21.  
  22. #
  23. # Preferences class
  24. #
  25. package Preferences;
  26.  
  27. use strict;
  28. use Misc;
  29. use Observable;
  30.  
  31. @Preferences::ISA = qw(Observable);
  32.  
  33. #
  34. # Constructor
  35. #
  36. sub new
  37. {
  38.     my $type = shift;
  39.     my $self = {};
  40.     bless $self, $type;
  41.  
  42.     $self->{'gKismetApplication'} = shift;
  43.  
  44.     # Network fields
  45.     $self->{'networkFields'} =
  46.         [
  47.             {field => 'BSSID', show => 1},
  48.             {field => 'Beacon info', show => 1},
  49.             {field => 'Carrier', show => 1},
  50.             {field => 'Encoding', show => 1},
  51.             {field => 'Manufacturer', show => 1},
  52.             {field => 'Model', show => 1},
  53.             {field => 'Max rate', show => 1},
  54.             {field => 'Max seen', show => 1},
  55.             {field => 'First seen', show => 1},
  56.             {field => 'Last seen', show => 1},
  57.             {field => 'Clients', show => 1},
  58.             {field => 'Type', show => 1},
  59.             {field => 'Channel', show => 1},
  60.             {field => 'WEP', show => 1},
  61.             {field => 'Encryption', show => 1},
  62.             {field => 'Decrypted', show => 1},
  63.             {field => 'Beacon',  show => 1},
  64.             {field => 'Data packets', show => 1},
  65.             {field => 'LLC packets', show => 1},
  66.             {field => 'Crypt packets', show => 1},
  67.             {field => 'Weak packets', show => 1},
  68.             {field => 'Dupe IV', show => 1},
  69.             {field => 'Data', show => 1},
  70.             {field => 'Power', show => 1},
  71.             {field => 'Noise', show => 1},
  72.             {field => 'IP Range', show => 1},
  73.             {field => 'IP Type', show => 1}
  74.         ];
  75.     for my $f (@{$self->{'networkFields'}})
  76.     {
  77.         $f->{'show'} = Gnome::Config->get_bool('/gkismet/networkFields/' . $f->{'field'} . '=true');
  78.     }
  79.     # Client fields
  80.     $self->{'clientFields'} =
  81.         [
  82.             {field => 'Type', show => 1},
  83.             {field => 'Manufacturer', show => 1},
  84.             {field => 'Model', show => 1},
  85.             {field => 'First seen', show => 1},
  86.             {field => 'Last seen', show => 1},    
  87.             {field => 'Max rate', show => 1},
  88.             {field => 'Max seen', show => 1},
  89.             {field => 'Encoding', show => 1},
  90.             {field => 'Channel', show => 1},
  91.             {field => 'WEP', show => 1},
  92.             {field => 'Decrypted', show => 1},
  93.             {field => 'IP', show => 1},
  94.             {field => 'Data packets', show => 1},
  95.             {field => 'Crypt packets', show => 1},
  96.             {field => 'Weak packets', show => 1},
  97.             {field => 'Data', show => 1},
  98.             {field => 'Power', show => 1},
  99.             {field => 'Noise', show => 1}
  100.         ];
  101.     for my $f (@{$self->{'clientFields'}})
  102.     {
  103.         $f->{'show'} = Gnome::Config->get_bool('/gkismet/clientFields/' . $f->{'field'} . '=true');
  104.     }
  105.  
  106.     # Window depth
  107.     $self->{'packetDepth'} = Gnome::Config->get_int('/gkismet/misc/packetDepth=100');
  108.     $self->{'stringDepth'} = Gnome::Config->get_int('/gkismet/misc/stringDepth=100');
  109.  
  110.     # Measures
  111.     $self->{'units'} = Gnome::Config->get_string('/gkismet/misc/units=imperial');
  112.  
  113.     # Keep network tree sorted
  114.     $self->{'keepSorted'} = Gnome::Config->get_bool('/gkismet/misc/keepSorted=false');
  115.  
  116.     # Sound
  117.     my $soundDir = $self->{'gKismetApplication'}{'path'}{'sound'};
  118.     $self->{'playBinary'} = Gnome::Config->get_string('/gkismet/sound/playBinary=/usr/bin/play');
  119.     $self->{'networkSoundEnabled'} = Gnome::Config->get_bool('/gkismet/sound/NetworkSoundEnabled=true');
  120.     $self->{'gpsSoundEnabled'} = Gnome::Config->get_bool('/gkismet/sound/gpsSoundEnabled=true');
  121.     $self->{'trafficSoundEnabled'} = Gnome::Config->get_bool('/gkismet/sound/trafficSoundEnabled=false');
  122.     $self->{'alertSoundEnabled'} = Gnome::Config->get_bool('/gkismet/sound/alertSoundEnabled=true');
  123.     $self->{'newNetworkSound'} = Gnome::Config->get_string('/gkismet/sound/newNetworkSound=' . $soundDir . "/new_network.wav");
  124.     $self->{'gpsAcqSound'} = Gnome::Config->get_string('/gkismet/sound/gpsAcqSound=' . $soundDir . "/alert.wav");
  125.     $self->{'gpsLostSound'} = Gnome::Config->get_string('/gkismet/sound/gpsLostSound=' . $soundDir . "/alert.wav");
  126.     $self->{'trafficSound'} = Gnome::Config->get_string('/gkismet/sound/trafficSound=' . $soundDir . "/traffic.wav");
  127.     $self->{'junkTrafficSound'} = Gnome::Config->get_string('/gkismet/sound/junkTrafficSound=' . $soundDir . "/junk_traffic.wav");
  128.     $self->{'alertSound'} = Gnome::Config->get_string('/gkismet/sound/alertSound=' . $soundDir . "/alert.wav");
  129.  
  130.     return $self;
  131. }
  132.  
  133. #
  134. # Save preferences
  135. #
  136. sub save
  137. {
  138.     my $self = shift;
  139.  
  140.     for my $f (@{$self->{'networkFields'}})
  141.     {
  142.         Gnome::Config->set_bool('/gkismet/networkFields/' . $f->{'field'}, $f->{'show'});
  143.     }
  144.     for my $f (@{$self->{'clientFields'}})
  145.     {
  146.         Gnome::Config->set_bool('/gkismet/clientFields/' . $f->{'field'}, $f->{'show'});
  147.     }
  148.     Gnome::Config->set_int('/gkismet/misc/packetDepth', $self->{'packetDepth'});
  149.     Gnome::Config->set_int('/gkismet/misc/stringDepth', $self->{'stringDepth'});
  150.     Gnome::Config->set_string('/gkismet/misc/units', $self->{'units'});
  151.     Gnome::Config->set_bool('/gkismet/misc/keepSorted', $self->{'keepSorted'});
  152.     Gnome::Config->set_string('/gkismet/sound/playBinary', $self->{'playBinary'});
  153.     Gnome::Config->set_bool('/gkismet/sound/networkSoundEnabled', $self->{'networkSoundEnabled'});
  154.     Gnome::Config->set_bool('/gkismet/sound/gpsSoundEnabled', $self->{'gpsSoundEnabled'});
  155.     Gnome::Config->set_bool('/gkismet/sound/trafficSoundEnabled', $self->{'trafficSoundEnabled'});
  156.     Gnome::Config->set_bool('/gkismet/sound/alertSoundEnabled', $self->{'alertSoundEnabled'});
  157.     Gnome::Config->set_string('/gkismet/sound/newNetworkSound', $self->{'newNetworkSound'});
  158.     Gnome::Config->set_string('/gkismet/sound/gpsAcqSound', $self->{'gpsAcqSound'});
  159.     Gnome::Config->set_string('/gkismet/sound/gpsLostSound', $self->{'gpsLostSound'});
  160.     Gnome::Config->set_string('/gkismet/sound/trafficSound', $self->{'trafficSound'});
  161.     Gnome::Config->set_string('/gkismet/sound/junkTrafficSound', $self->{'junkTrafficSound'});
  162.     Gnome::Config->set_string('/gkismet/sound/alertSound', $self->{'alertSound'});
  163.     Gnome::Config->sync();
  164.     $self->notifyObservers($self);
  165. }
  166.  
  167. #
  168. # Get a prefernce
  169. #
  170. sub getPref
  171. {
  172.     my $self = shift;
  173.     my $pref = shift;
  174.  
  175.     if($pref eq 'networkFieldNames')
  176.     {
  177.         my @fieldNames;
  178.         for my $f (@{$self->{'networkFields'}})
  179.         {
  180.             push @fieldNames, $f->{'field'};
  181.         }
  182.         return @fieldNames;
  183.     }
  184.     elsif($pref eq 'clientFieldNames')
  185.     {
  186.         my @fieldNames;
  187.         for my $f (@{$self->{'clientFields'}})
  188.         {
  189.             push @fieldNames, $f->{'field'};
  190.         }
  191.         return @fieldNames;
  192.     }
  193.     elsif($pref eq 'networkFieldStatus')
  194.     {
  195.         my $field = shift;
  196.         for my $f (@{$self->{'networkFields'}})
  197.         {
  198.             if($f->{'field'} eq $field)
  199.             {
  200.                 return $f->{'show'};
  201.             }
  202.         }
  203.         return 0;
  204.     }
  205.     elsif($pref eq 'clientFieldStatus')
  206.     {
  207.         my $field = shift;
  208.         for my $f (@{$self->{'clientFields'}})
  209.         {
  210.             if($f->{'field'} eq $field)
  211.             {
  212.                 return $f->{'show'};
  213.             }
  214.         }
  215.         return 0;
  216.     }
  217.     elsif($pref eq 'packetDepth')
  218.     {
  219.         return $self->{'packetDepth'};
  220.     }
  221.     elsif($pref eq 'stringDepth')
  222.     {
  223.         return $self->{'stringDepth'};
  224.     }
  225.     elsif($pref eq 'units')
  226.     {
  227.         return $self->{'units'};
  228.     }
  229.     elsif($pref eq 'keepSorted')
  230.     {
  231.         return $self->{'keepSorted'};
  232.     }
  233.     elsif($pref eq 'playBinary')
  234.     {
  235.         return $self->{'playBinary'};
  236.     }
  237.     elsif($pref eq 'networkSoundEnabled')
  238.     {
  239.         return $self->{'networkSoundEnabled'};
  240.     }
  241.     elsif($pref eq 'gpsSoundEnabled')
  242.     {
  243.         return $self->{'gpsSoundEnabled'};
  244.     }
  245.     elsif($pref eq 'trafficSoundEnabled')
  246.     {
  247.         return $self->{'trafficSoundEnabled'};
  248.     }
  249.     elsif($pref eq 'alertSoundEnabled')
  250.     {
  251.         return $self->{'alertSoundEnabled'};
  252.     }
  253.     elsif($pref eq 'newNetworkSound')
  254.     {
  255.         return $self->{'newNetworkSound'};
  256.     }
  257.     elsif($pref eq 'gpsAcqSound')
  258.     {
  259.         return $self->{'gpsAcqSound'};
  260.     }
  261.     elsif($pref eq 'gpsLostSound')
  262.     {
  263.         return $self->{'gpsLostSound'};
  264.     }
  265.     elsif($pref eq 'trafficSound')
  266.     {
  267.         return $self->{'trafficSound'};
  268.     }
  269.     elsif($pref eq 'junkTrafficSound')
  270.     {
  271.         return $self->{'junkTrafficSound'};
  272.     }
  273.     elsif($pref eq 'alertSound')
  274.     {
  275.         return $self->{'alertSound'};
  276.     }
  277.     else
  278.     {
  279.         return undef;
  280.     }
  281. }
  282.  
  283. #
  284. # Set a preference
  285. #
  286. sub setPref
  287. {
  288.     my $self = shift;
  289.     my $pref = shift;
  290.  
  291.     if($pref eq 'networkFieldStatus')
  292.     {
  293.         my $field = shift;
  294.         my $status = shift;
  295.         for my $f (@{$self->{'networkFields'}})
  296.         {
  297.             if($f->{'field'} eq $field)
  298.             {
  299.                 $f->{'show'} = $status;
  300.             }
  301.         }
  302.         return 0;
  303.     }
  304.     elsif($pref eq 'clientFieldStatus')
  305.     {
  306.         my $field = shift;
  307.         my $status = shift;
  308.         for my $f (@{$self->{'clientFields'}})
  309.         {
  310.             if($f->{'field'} eq $field)
  311.             {
  312.                 $f->{'show'} = $status;
  313.             }
  314.         }
  315.         return 0;
  316.     }
  317.     elsif($pref eq 'packetDepth')
  318.     {
  319.         my $depth = shift;
  320.         $self->{'packetDepth'} = $depth;
  321.     }
  322.     elsif($pref eq 'stringDepth')
  323.     {
  324.         my $depth = shift;
  325.         $self->{'stringDepth'} = $depth;
  326.     }
  327.     elsif($pref eq 'units')
  328.     {
  329.         my $val = shift;
  330.         $self->{'units'} = $val;
  331.     }
  332.     elsif($pref eq 'keepSorted')
  333.     {
  334.         my $val = shift;
  335.         $self->{'keepSorted'} = $val;
  336.     }
  337.     elsif($pref eq 'playBinary')
  338.     {
  339.         my $val = shift;
  340.         $self->{'playBinary'} = $val;
  341.     }
  342.     elsif($pref eq 'networkSoundEnabled')
  343.     {
  344.         my $val = shift;
  345.         $self->{'networkSoundEnabled'} = $val;
  346.     }
  347.     elsif($pref eq 'gpsSoundEnabled')
  348.     {
  349.         my $val = shift;
  350.         $self->{'gpsSoundEnabled'} = $val;
  351.     }
  352.     elsif($pref eq 'trafficSoundEnabled')
  353.     {
  354.         my $val = shift;
  355.         $self->{'trafficSoundEnabled'} = $val;
  356.     }
  357.     elsif($pref eq 'alertSoundEnabled')
  358.     {
  359.         my $val = shift;
  360.         $self->{'alertSoundEnabled'} = $val;
  361.     }
  362.     elsif($pref eq 'newNetworkSound')
  363.     {
  364.         my $val = shift;
  365.         $self->{'newNetworkSound'} = $val;
  366.     }
  367.     elsif($pref eq 'gpsAcqSound')
  368.     {
  369.         my $val = shift;
  370.         $self->{'gpsAcqSound'} = $val;
  371.     }
  372.     elsif($pref eq 'gpsLostSound')
  373.     {
  374.         my $val = shift;
  375.         $self->{'gpsLostSound'} = $val;
  376.     }
  377.     elsif($pref eq 'trafficSound')
  378.     {
  379.         my $val = shift;
  380.         $self->{'trafficSound'} = $val;
  381.     }
  382.     elsif($pref eq 'junkTrafficSound')
  383.     {
  384.         my $val = shift;
  385.         $self->{'junkTrafficSound'} = $val;
  386.     }
  387.     elsif($pref eq 'alertSound')
  388.     {
  389.         my $val = shift;
  390.         $self->{'alertSound'} = $val;
  391.     }
  392. }
  393.  
  394. 1;
  395.